package com.itlong.cloud.sdk.service;

import com.itlong.cloud.POJO.DTO.sdk.SDKAuthUserGetPageDTO;
import com.itlong.cloud.POJO.DTO.sdk.SDKSaveAppUserDTO;
import com.itlong.cloud.POJO.PO.*;
import com.itlong.cloud.POJO.VO.sdk.DeveloperAuthSafeSettingsVO;
import com.itlong.cloud.POJO.VO.sdk.SDKServerAppUserSaveVO;
import com.itlong.cloud.POJO.VO.sdk.SDKServerUserCacheVO;
import com.itlong.cloud.utils.page.Page;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      sdk人员服务层接口
 * </desc>
 *
 * @createDate 2017/10/27
 */

public interface ISDKServerOldUserService {

    /**
     * <desc>
     *      SDK校验登录用户
     * <desc/>
     * @param   appid    独立开发者userId
     * @param  token       登录令牌
     * @return    SDKServerUserCacheVO   校验人员返回VO
     * @author Biao.R
     * @createDate 2017/10/27
     */
    SDKServerUserCacheVO checkSDKCacheUser(String appid, String token);

    /**
     * <desc>
     *      SDK申请项目时，绑定appid为当前项目的独立开发者
     * <desc/>
     * @param   roleProjectPO  物业角色与人员之间的关系
     * @return   Integer   添加的数量
     * @author Biao.R
     * @createDate 2017/11/1
     */
    Integer saveRoleProject(PropertyRoleProjectPO roleProjectPO);

    /**
     * <desc>
     *      查询PropertyRoleProjectPO
     * <desc/>
     * @param  roleProjectPO 查询条件对象
     * @return  List<PropertyRoleProjectPO>  查询的对象结果集
     * @author Biao.R
     * @createDate 2017/11/3
     */
    List<PropertyRoleProjectPO> getRoleProject(PropertyRoleProjectPO roleProjectPO);

    /**
     * <desc>
     *      SDK服务端登录
     * <desc/>
     * @param appid     应用接入凭证
     * @param appsecret 应用接入密钥
     * @return  缓存对象
     * @author Biao.R
     * @createDate 2017/11/9
     */
    SDKServerUserCacheVO sdkServerLogin(String appid, String appsecret);

    /**
     * <desc>
     *      授权业主
     * <desc/>
     * @param   sdkSaveAppUserDTO  被授权的对象
     * @return
     * @author Biao.R
     * @createDate 2017/11/16
     */
    SDKServerAppUserSaveVO addHouserOrFamily(SDKSaveAppUserDTO sdkSaveAppUserDTO);

    /**
     * <desc>
     *      根据参数查询用户房间关联表
     * <desc/>
     * @param   params  查询参数
     * @return  List<AppUserRoomPO>    查询出的用户房间结果集
     * @author Biao.R
     * @createDate 2017/11/21
     */
    List<AppUserRoomPO> getUserRoomByParam(Map<String, Object> params);

    /**
     * <desc>
     *      根据参数查询授权关系表
     * <desc/>
     * @param   paramMap    查询参数集
     * @return  查询到的授权关系对象集
     * @author Biao.R
     * @createDate 2017/11/21
     */
    List<AppAuthRelationsPO> getAuthRelationsByParams(Map<String, Object> paramMap);

    /**
     * <desc>
     *      根据手机号查询APP用户
     * <desc/>
     * @param   phoneNum     待查询的手机号
     * @return  查询到的用户信息
     * @author Biao.R
     * @createDate 2017/11/22
     */
    AppUserInfoPO getAppUserByPhone(String phoneNum);

    /**
     * <desc>
     *      分页查询被授权人列表
     * <desc/>
     * @param  sdkAuthUserGetPageDTO    查询参数对象
     * @return  返回分页对象结果
     * @author Biao.R
     * @createDate 2017/11/22
     */
    Page<AppAuthRelationsPO> getAuthRelationsPage(SDKAuthUserGetPageDTO sdkAuthUserGetPageDTO);

    /**
     * <desc>
     *      根据userId查询AppUser
     * <desc/>
     * @param   userId  待查询的userId
     * @return  查询出的appUser对象
     * @author Biao.R
     * @createDate 2017/11/22
     */
    AppUserInfoPO getAppUserByUserId(String userId);

    /**
     * <desc>
     *      更新授权关系表
     * <desc/>
     * @param   authRelationsPO     待更新对象
     * @return  更新数量
     * @author Biao.R
     * @createDate 2017/11/23
     */
    Integer updateAuthRelations(AppAuthRelationsPO authRelationsPO);

    /**
     * <desc>
     *      批量添加App用户
     * <desc/>
     * @param   saveAppUserDTOs     批量添加用户
     * @return  返回添加的数量Map
     * @author Biao.R
     * @createDate 2017/11/23
     */
    Map<String,Object> addAppUsers(List<SDKSaveAppUserDTO> saveAppUserDTOs);

    /**
     * <desc>
     *      获取物业用户信息，条件：userId
     * </desc>
     *
     * @param appid 即userId
     * @return 物业用户信息
     * @author wangzhi
     * @createDate 2018/12/19
     */
    PropertyUserInfoPO getPropertyUserByAppId(String appid) throws Exception;

    /**
     * <desc>
     *      获取开发者授权安全设置信息，条件：userId
     * </desc>
     *
     * @param appid 即userId
     * @return 开发者授权安全设置VO
     * @author wangzhi
     * @createDate 2018/12/19
     */
    DeveloperAuthSafeSettingsVO getSafeSettings(String appid) throws Exception;

    /**
     * <desc>
     *      获取物业用户信息，条件：UserName
     * </desc>
     *
     * @param appid 即UserName
     * @return 物业用户信息
     * @author wangzhi
     * @createDate 2018/12/19
     */
    PropertyUserInfoPO getPropertyUserByUserName(String appid) throws Exception;
    /**
     * <desc>
     * 获取机器人编号
     * </desc>
     *
     * @param appid 即userName
     * @return 机器人编号
     * @author maju
     * @createDate 2021/05/26
     */
    String getRobotDevelopRobotInfo(String appid);
}